// gen一个随机数值串出来
function genRandCode (leng) {
  if (String(typeof leng).toLocaleLowerCase() === 'number') return Math.random().toFixed(leng).toString().replace(/\d\./, '')
  else {
    throw new Error(`收到类型不为数值的参数：${leng} | ${String(typeof leng).toLocaleLowerCase()}。无法产生指定长度随机数`)
  }
}
// gen一个随机字母串出来
function genRandEngCode (leng) {
  let result = ''
  let i = 0
  const tempArr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
  if (String(typeof leng).toLocaleLowerCase() === 'number') {
    while (i < leng) {
      let randomNum = ~~(Math.random() * 26)
      result += tempArr[randomNum]
      i++
    }
    return result
  } else {
    throw new Error(`收到类型不为数值的参数：${leng} | ${String(typeof leng).toLocaleLowerCase()}。无法产生指定长度随机数`)
  }
}
/**
 * 截取指定长度的数值字符串
 * @param {string|number} num 要截取的数字基础
 * @param {number} leng 截取长度
 * @return {string} 返回指定长度的数值字符串
 */
function addPreZero (num, leng) {
  let tempStr = ''
  let i = 0
  while (i < leng) {
    tempStr += '0'
    i++
  }
  return (`${tempStr}${num}`).slice(-leng)
}

/**
 * 组装符合后端要求的数据结构并parse为表单项进行表单提交
 * @param {HTMLElement} _this 触发当前函数的HTML元素
 * @param {number} nameBase 根据后端要求，数组是以数字为键，客户要求为6， 按揭要求是7
 * @param {string} formID 要进行提交的form表单id，将按照id选取元素进行序列化后做进一步处理
 */
function postThisSubPage (_this, nameBase, formID) {
  let formValue = $(`#${formID}`).serializeArray()
  let formAction = $(`#${formID}`).attr('action')
  let tempNameArr = []
  let tempValueObj = {}
  let tempForm = `<form autocomplete="off" method='post' action='${formAction}' id='tempGenForm'></form>`
  let tempInput = ``
  let PreValue = JSON.parse('[]')
  try {
    PreValue = JSON.parse(sessionStorage.getItem('nextPingu'))
  } catch (err) {
    console.log(`解析数据发生错误：`)
    console.log(sessionStorage.getItem('nextPingu'))
    $.toptip('历史数据解析发生错误，请联系工作人员', 'error')
    throw new Error(err)
  }
  for (let item of PreValue) {
    tempInput += `<input type='hidden' name='${item.name}' value='${item.value}'>`
  }
  $.each(formValue, (index, item) => {
    if (tempNameArr.indexOf(item.name) === -1) {
      tempNameArr.push(item.name)
      tempValueObj[item.name] = `${item.value}`
    } else {
      tempValueObj[item.name] += `,${item.value}`
    }
  })
  // console.log(`${Object.keys(tempValueObj)}`)
  for (let item of Object.keys(tempValueObj)) {
    let value = tempValueObj[item]
    let name = item
    tempInput += `<input type='hidden' name='${nameBase}[${name}]' value='${value}'>`
  }
  window.top.postMessage({formData: tempForm.replace('></form>', `>${tempInput}</form>`)}, '*')
  // // console.log(`${tempInput}`)
  // if ($('#tempGenForm')) $('#tempGenForm').remove()
  // $('body').append(tempForm)
  // $('#tempGenForm').append(tempInput)
  // // throw new Error('debug')
  // $('#tempGenForm').submit()
}

function postOrder (evt) {
  let PreValue = JSON.parse('[]')
  let value = $(evt.target).text().charCodeAt(0) === 59045 ? 1 : 0
  let formAction = $(`#order_query`).val()
  let tempForm = `<form autocomplete="off" method='post' action='${formAction}' id='tempGenForm'></form>`
  let tempInput = ``
  let sessionValue = evt.data.type === 'lx' ? (() => {
    return $('#lixi_sort').text().charCodeAt(0) === 59045 ? [1, 0] : [0, 0]
  })() : (() => {
    return $('#edu_sort').text().charCodeAt(0) === 59045 ? [0, 1] : [0, 0]
  })()
  try {
    PreValue = JSON.parse(sessionStorage.getItem('nextPingu'))
  } catch (err) {
    console.log(`解析数据发生错误：`)
    console.log(sessionStorage.getItem('nextPingu'))
    $.toptip('历史数据解析发生错误，请联系工作人员', 'error')
    throw new Error(err)
  }
  sessionStorage.setItem('lastProduct_sort_arr', JSON.stringify(sessionValue))
  for (let item of PreValue) {
    tempInput += `<input type='hidden' name='${item.name}' value='${item.value}'>`
  }

  tempInput += `<input type='hidden' name='5[0]' value='${value}'>`
  tempInput += `<input type='hidden' name='5[1]' value='${evt.data.type}'>`

  // if ($('#tempGenForm')) $('#tempGenForm').remove()
  // $('body').append(tempForm)
  // $('#tempGenForm').append(tempInput)
  // throw new Error('debug')
  window.top.postMessage({formData: tempForm.replace('></form>', `>${tempInput}</form>`)}, '*')
  // $('#tempGenForm').submit()
}

$(document).ready(() => {
  // 监听列表按钮点击
  $('.pro_adv .weui-btn_mini').each((index, item) => {
    $(item).on('click', (evt) => {
      evt.preventDefault()
      evt.stopPropagation()
      const eleID = $(evt.target).attr('for')
      if ($(`#${eleID}`).prop('checked')) {
        // 已经激活，需要关闭本页并移除本active
        $(`#${eleID}`).prop('checked', false).change()
        $(evt.target).removeClass('active')
      } else {
        // 未激活，激活本页并移除其他active
        $(`#${eleID}`).prop('checked', true).change()
        $(`.pro_adv .weui-btn_mini`).each((index, item) => {
          if($(item).hasClass('active')) $(item).removeClass('active')
        })
        $(evt.target).addClass('active')
      }
    })
  })
  // 监听未读列表按钮
  $('.pro_adv .weui-btn_mini.unread').each((index, item) => {
    $(item).one('click', (evt) => {
      $(evt.target).removeClass('unread')
    })
  })
  // 监听未读消息按钮
  $('.sub_card_qudao_item .unreadif.unread').each((index, item) => {
    $(item).closest('.sub_card_qudao_item').one('click', (evt) => {
      $(evt.target).closest('.sub_card_qudao_item').find('.unread').removeClass('unread')
    })
  })
  // 监听消息条目点击，进入聊天室
  $('.sub_card_qudao_item').each((index, item) => {
    $(item).one('click', (evt) => {
      evt.preventDefault()
      evt.stopPropagation()
      const roomItem = $(evt.target).closest('.sub_card_qudao_item')
      const roomURL = roomItem.attr('inori-href')
      if (roomURL === 'null') {
        $.toptip('未侦测到有效聊天室链接，请联系相关审核员或管理员', 'error')
        roomItem.on('click', (evt) => {$.toptip('未侦测到有效聊天室链接，请联系相关审核员或管理员', 'error')})
      } else {
        // 提示用户已经侦测到点击
        $.toptip('正在跳转', 'success')
        $('.sub_card_qudao_item').each((index, item) => {$(item).off('click')})
        roomItem.on('click', (evt) => {$.toptip('正在跳转', 'success')})
      }
    })
  })
  // 生成uid
  // $('.pro_uid').each((index, item) => {
  //   let leng = 5
  //   let rawID = $(item).attr('inori-data').replace(/\D/g, '')
  //   let resultID = ''
  //   console.log(rawID)
  //   rawID = addPreZero(rawID, leng)
  //   resultID = `A${genRandEngCode(1)}${genRandCode(1)}${rawID.substr(0, 4)}${genRandCode(2)}${rawID.substr(-1)}`
  //   $(item).text(resultID)
  //   console.log(rawID)
  // })
})